﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntGuayasSLA.BL;
using EntGuayasSLA.BL.Listas;
using EntGuayasSLA.BL.Listas.Criterias;
using Ext.Net;

namespace EGuayas.Web
{
    public partial class pgLogin : Page
    {
        #region Set-Session
          
        #endregion Set-Session

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //if (!X.IsAjaxRequest)
                //{            
                //    var path = MapPath("~/Resources/");
                //    path = path + "EVA_ConsultaResultadosParalelo.pdf";
                //    System.IO.File.Encrypt(path);
                //}
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }

        private void RegistrarLog(Exception ex)
        {
            
        }
        private void BeginAlertasAction()
        {
            try
            {
                AlertaCriteriaSingleCriteria filter = AlertaCriteriaSingleCriteria.NewAlertaSingleCriteria();
                filter.FechaConfigura = DateTime.Now;
                filter.RemiteId = GetSessionUsuario.PersonaId;
                AlertaLista listaAlerta = AlertaLista.GetAlertaLista(filter);
                //Utilizadas en el tab de Notificacion
                this.Session["LongBegin"] = listaAlerta.Count();
                this.Session["LongAction"] = listaAlerta.Count();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }

        }
        protected void btnLogin_Click(object sender, DirectEventArgs e)
        {
            try
            {
                    string username  = e.ExtraParams["user"];
                    string claveOnly = e.ExtraParams["clave"];
                    //Caso de usuarios con clave no encriptada
                    string password  = Seguridad.Encriptar(claveOnly);
                    Usuarios objUser = Usuarios.GetEditableRoot(username, password);
                    //Setear variables sesion aqui Agregar mas propieadases para sessiones necesarias->
                    MySetSession session   = new MySetSession();
                    //Sessiones Globales con respecto a información de usuarios
                    session.SessionUsuario = new SetSessionUsuario(objUser.Id.ToString(), objUser.Login.ToString(), objUser.RolNombre.ToString(), objUser.RolId.ToString(), objUser.RolCodigo.ToString(), objUser.PersonaId.ToString());
                    //TODO: Get session para leer :: Para no tener varias propiedades de lectura por cada aspx->  
                    //::xEjm  Asi se puede leer session[Constantes.UsuarioRolCodigo].ToString() pero ya viene parseado session GetSessionUsuario.UsuarioRolCodigo         
                    switch (objUser.Estado)
                    {
                        case Valores.Codigo_Estado_NoActivo:
                            e.ExtraParamsResponse.Add(new Ext.Net.Parameter("msg", "Usuario Inactivo"));
                            e.Success = true;
                            break;
                        case Valores.Codigo_Estado_Activo:
                            e.Success = true;
                            BeginAlertasAction();
                            e.ExtraParamsResponse.Add(new Ext.Net.Parameter("location", "Principal.aspx"));
                            break;
                        case Valores.Codigo_Estado_Pendiente:

                            switch (objUser.RolCodigo)
                             { 
                                 case Valores.Codigo_Rol_Promotor:
                                    e.ExtraParamsResponse.Add(new Ext.Net.Parameter("location", "Usuario/pgInicial.aspx?idx1=" + objUser.PersonaId));
                                     break;
                     
                             }
                             e.Success = true;
                             break;//objUser.Estado
                        case Valores.Codigo_Estado_Notificado:
                             e.ExtraParamsResponse.Add(new Ext.Net.Parameter("location", "PgUndefined.aspx?msg=Su cuenta esta inactiva, posterior a que el Administrador revise sus documentos podrá continuar"));
                             e.Success = true;
                             break;
                        case Valores.Codigo_Estado_PreRegistrado:
                           
                             e.ExtraParamsResponse.Add(new Ext.Net.Parameter("location", "PgUndefined.aspx?btnPreRegis=yes&msg=Su cuenta esta en proceso de creación, revise su correo electrónico para continuar con el registro."));
                             e.Success = true;
                             break;
                        default:
                            this.txtUsername.Clear();
                            this.txtPassword.Clear();
                            e.Success = false;
                            break;
                    }
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
    }
}